package com.coderush.admin.sys.dao;

import com.coderush.admin.sys.mapper.MenuMapper;
import com.coderush.admin.sys.model.dto.MenuAddDto;
import com.coderush.admin.sys.model.entity.Menu;
import com.coderush.admin.sys.model.vo.MenuSimpleVo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * PackageName com.coderush.admin.sys.dao
 *
 * @Author Eason
 * @Version v1.0
 * @ClassName MenuDao
 * @Date 2025/8/29
 * @Description TODO
 */
@Repository
public class MenuDao {

    @Resource
    private MenuMapper menuMapper;

    /**
     * 查询所有的菜单 只包含ID和名称 、父级ID
     */
    public List<MenuSimpleVo> findAllMenuSimple() {
        return menuMapper.findAllMenuSimple();
    }

    /**
     * 查询所有的菜单类型为 ：菜单和功能的菜单
     * 菜单类型:0-菜单，1-功能，2-按钮
     */
    public List<Menu> findAllMenuTypeMenuAndFunction() {
        return menuMapper.findAllMenuTypeMenuAndFunction();
    }

    /**
     * 查询所有的菜单类型为 ：菜单和功能的菜单
     * 菜单类型:0-菜单，1-功能，2-按钮
     */
    public List<Menu> findMenuTypeMenuAndFunction(List<Long> menuIds) {
        return menuMapper.findMenuTypeMenuAndFunction(menuIds);
    }

    /**
     * 查询所有菜单
     */
    public List<Menu> findAllMenu() {
        return menuMapper.findAllMenu();
    }

    /**
     * 修改菜单
     */
    public Boolean update(Menu menu) throws Exception {
        return menuMapper.updateById(menu) > 0;
    }

    /**
     * 添加菜单
     */
    public Boolean add(Menu menu) throws Exception {
        return menuMapper.insert(menu) > 0;
    }

    /**
     * 根据菜单编码查询菜单
     */
    public Menu getByMenuCode(String menuCode) {
        return menuMapper.getByMenuCode(menuCode);
    }

    /**
     * 根据菜单名称查询菜单
     */
    public Menu getByMenuName(String menuName) {
        return menuMapper.getByMenuName(menuName);
    }

    /**
     * 根据id查询菜单
     */
    public Menu getById(Long id) {
        return menuMapper.selectById(id);
    }

    public List<Menu> getByIds(List<Long> menuIds) {
        return menuMapper.getByIds(menuIds);
    }
}